SignalR হল একটি ASP.Net লাইব্রেরি যা রিয়েল-টাইম ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য ব্যবহৃত হয়। এটি সার্ভার এবং ক্লায়েন্টের মধ্যে দ্বিমুখী যোগাযোগ (two-way communication) সক্ষম করে, অর্থাৎ সার্ভার ক্লায়েন্টকে push notification পাঠাতে পারে এবং ক্লায়েন্ট সার্ভারের সাথে রিয়েল-টাইমে যোগাযোগ করতে পারে। SignalR মূলত ওয়েবসকেট, লং পোলিং, এবং অন্যান্য প্রযুক্তির উপর ভিত্তি করে কাজ করে।
SignalR ব্যবহার করে আপনি অ্যাপ্লিকেশনে রিয়েল-টাইম ফিচারগুলো যেমন চ্যাট রুম, লাইভ আপডেট, লিডারবোর্ড, নোটিফিকেশন সিস্টেম ইত্যাদি তৈরি করতে পারেন।
SignalR এর মাধ্যমে আপনি সার্ভার এবং ক্লায়েন্টের মধ্যে সহজে রিয়েল-টাইম ডেটা ট্রান্সফার করতে পারেন। এর কিছু প্রধান বৈশিষ্ট্য হল:
SignalR সাধারণত Hub ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ করতে সাহায্য করে। Hub হল একটি বিশেষ ক্লাস যা method calls (ক্লায়েন্ট থেকে সার্ভারে এবং সার্ভার থেকে ক্লায়েন্টে) পরিচালনা করে।
SignalR ব্যবহার করার জন্য প্রথমে একটি Hub ক্লাস তৈরি করতে হবে যা ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ পরিচালনা করবে।
public class ChatHub : Hub
{
// ক্লায়েন্ট থেকে মেসেজ পাঠানোর জন্য একটি মেথড
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message); // সবাইকে মেসেজ পাঠান
}
}
এখানে, SendMessage
মেথডটি সার্ভারের একটি মেথড যা ক্লায়েন্ট থেকে আসা মেসেজ গ্রহণ করে এবং Clients.All.SendAsync এর মাধ্যমে সব ক্লায়েন্টে সেই মেসেজ পাঠিয়ে দেয়।
আপনি Startup.cs ফাইলে SignalR সার্ভিস কনফিগার করতে হবে।
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR(); // SignalR সার্ভিস যোগ করা
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
// SignalR রাউটিং কনফিগার করা
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/chathub");
});
}
}
এখানে, MapHub<ChatHub>("/chathub")
এর মাধ্যমে SignalR Hub কে একটি URL পাথ /chathub
তে মানচিত্রিত করা হয়েছে। এর মাধ্যমে ক্লায়েন্টরা এই URL পাথে রিকোয়েস্ট পাঠিয়ে সার্ভারের সাথে সংযুক্ত হতে পারে।
SignalR ক্লায়েন্টে JavaScript বা Blazor ব্যবহার করে হাবের সাথে যোগাযোগ করা হয়। উদাহরণস্বরূপ, JavaScript ক্লায়েন্টের কোড:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>SignalR Chat</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/signalr/3.1.7/signalr.js"></script>
</head>
<body>
<input type="text" id="userInput" placeholder="Enter your name" />
<textarea id="messageInput" placeholder="Type a message"></textarea>
<button id="sendButton">Send</button>
<div id="messagesList"></div>
<script>
// SignalR Hub এর URL
const connection = new signalR.HubConnectionBuilder()
.withUrl("/chathub")
.build();
// মেসেজ গ্রহণ করার জন্য ক্লায়েন্টের মেথড
connection.on("ReceiveMessage", function(user, message) {
const msg = `${user}: ${message}`;
const li = document.createElement("li");
li.textContent = msg;
document.getElementById("messagesList").appendChild(li);
});
// মেসেজ পাঠানোর জন্য
document.getElementById("sendButton").addEventListener("click", function () {
const user = document.getElementById("userInput").value;
const message = document.getElementById("messageInput").value;
connection.invoke("SendMessage", user, message).catch(function (err) {
return console.error(err.toString());
});
});
// SignalR সংযোগ শুরু
connection.start().catch(function (err) {
return console.error(err.toString());
});
</script>
</body>
</html>
এখানে:
connection.on("ReceiveMessage")
ক্লায়েন্টে মেসেজ রিসিভ করার জন্য ব্যবহৃত হয়।connection.invoke("SendMessage")
সার্ভারে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।SignalR এর মাধ্যমে বিভিন্ন ধরনের রিয়েল-টাইম অ্যাপ্লিকেশন তৈরি করা সম্ভব, যেমন:
SignalR একটি শক্তিশালী প্রযুক্তি যা ASP.Net অ্যাপ্লিকেশনে রিয়েল-টাইম দ্বিমুখী যোগাযোগ সক্ষম করে। এটি ব্যবহারকারীদেরকে ইনস্ট্যান্ট আপডেট এবং কমিউনিকেশন প্রদান করতে সাহায্য করে। SignalR এর মাধ্যমে আপনি সহজেই চ্যাট অ্যাপ্লিকেশন, লাইভ ট্র্যাকিং, এবং অন্যান্য রিয়েল-টাইম ফিচার তৈরি করতে পারেন।
Read more